package com.chushouya.product.service.admin;

import com.chushouya.product.dto.admin.product.evaluate.SkuEvaluateItemValueAddDTO;
import com.chushouya.product.dto.admin.product.evaluate.SkuEvaluateItemValueDTO;
import com.chushouya.product.dto.admin.product.evaluate.SkuEvaluateItemValueEditDTO;
import com.chushouya.product.dto.admin.product.evaluate.SkuItemDTO;
import com.chushouya.product.dto.admin.skuevaluate.SkuEvaluateItemAddSingleDTO;
import com.chushouya.product.dto.admin.skuevaluate.SkuEvaluateItemValueDetailDTO;

import java.util.List;

/**
 * SKU估价项目选项业务
 */
public interface SkuEvaluateItemValueService {

    /**
     * 添加SKU估价项目选项
     * @param addDTO 添加参数
     * @return 添加结果
     */
    Boolean addSkuEvaluateItemValue(SkuEvaluateItemValueAddDTO addDTO);

    /**
     * 获取商品的SKU估价项目选项组合
     * @param productId 商品ID
     * @return 选项组合列表
     */
    List<SkuEvaluateItemValueDTO> getSkuEvaluateItemValuesByProductId(Long productId);

    /**
     * 获取商品的SKU估价项目及其选项组合(层次化结构)
     * @param productId 商品ID
     * @return SKU估价项目列表，包含选项
     */
    List<SkuItemDTO> getSkuItemsByProductId(Long productId);

    /**
     * 修改SKU估价项目选项价格
     * @param editDTO 修改参数
     * @return 修改结果
     */
    Boolean updateSkuEvaluateItemValuePrice(SkuEvaluateItemValueEditDTO editDTO);

    /**
     * 根据skuItemId和productId删除整个估价项目
     * @param skuItemId SKU估价项目ID
     * @param productId 商品ID
     * @return 删除结果
     */
    Boolean deleteSkuEvaluateItemBySkuItemId(Long skuItemId, Long productId);

    /**
     * 根据skuItemValueId删除对应的估价记录
     * @param skuItemValueId SKU估价项目选项ID
     * @return 删除结果
     */
    Boolean deleteSkuEvaluateItemValueById(Long skuItemValueId);

    /**
     * 编辑SKU估价项目选项
     * @param editDTO 编辑参数
     * @return 编辑结果
     */
    Boolean editSkuEvaluateItemValue(SkuEvaluateItemValueEditDTO editDTO);

    /**
     * 获取SKU估价项目选项详情
     * @param skuItemValueId SKU估价项目选项ID
     * @return 选项详情
     */
    SkuEvaluateItemValueDetailDTO getSkuEvaluateItemValueDetail(Long skuItemValueId);

    /**
     * 根据估价项目ID添加单个SKU估价项目
     * @param addSingleDTO 添加参数
     * @return 添加结果
     */
    Boolean addSkuEvaluateItemSingle(SkuEvaluateItemAddSingleDTO addSingleDTO);

}
